package LoginServer;

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

/**
 * //TODO: hier javadoc
 */
public class Settings
{
    /**
     * Geeft de default settings terug.
     * @return
     */
    public static Settings getDefault()
    {
        Settings s = new Settings();
        s.setPort(6422);
        s.setUsername("username");
        s.setPassword("password");
        s.setConnectionString("jdbc:<interface>://<connection>");
        return s;
    }

    /**
     *
     */
    protected int m_Port;

    /**
    * Geeft de poort waarop de loginserver draait
    * @return ingestelde poort
    */
    public int getPort()
    {
        return m_Port;
    }
    
    /**
     * Stelt de poort in waarop de loginserver draait
     * @param value poort
     */
    public void setPort(int value)
    {
        m_Port = value;
    }
    
    /**
     *
     */
    protected String m_Username;
    /**
     * Geeft de username terug waarmee kan worden ingelogd op de database
     * @return username
     */
    public String getUsername()
    {
        return m_Username;
    }

    /**
     * Stelt de username in waarmee er verbinding kan worden gemaakt met de database
     * @param value username
     */
    public void setUsername(String value)
    {
        m_Username = value;
    }

    /**
     * 
     */
    protected String m_Password;
    /**
     * Geeft het wachtwoord terug waarmee verbinding kan worden gemaakt met de database
     * @return wachtwoord
     */
    public String getPassword()
    {
        return m_Password;
    }
    
    /**
     * Stelt het wachtwoord in waarmee er verbinding kan worden gemaakt met de database
     * @param value wachtwoord
     */
    public void setPassword(String value)
    {
        m_Password = value;
    }
    
    /**
     *
     */
    protected String m_ConnectionString;
    /**
     * Geeft de connectionstring van de database terug
     * @return connectionstring
     */
    public String getConnectionString()
    {
        return m_ConnectionString;
    }

    /**
     * Stelt de connectiestring van de database in
     * @param value connectionstring
     */
    public void setConnectionString(String value)
    {
        m_ConnectionString = value;
    }

    /**
     * Schrijft de settings weg naar het opgegeven path
     * @param path path
     * @throws FileNotFoundException
     * @thorws FileNotFoundException
     */
    public void Save(String path) throws FileNotFoundException
    {
        FileOutputStream os = new FileOutputStream(path);
        XMLEncoder encoder = new XMLEncoder(os);
        encoder.writeObject(this);
        encoder.close();
    }

    /**
     * Laadt de settings vanuit het opgegeven path
     * @param path path
     * @return settings
     * @throws FileNotFoundException
     * @thorws FileNotFoundException
     */
    public static Settings Load(String path) throws FileNotFoundException
    {
        FileInputStream os = new FileInputStream(path);
        XMLDecoder decoder = new XMLDecoder(os);
        Settings s = (Settings)decoder.readObject();
        decoder.close();
        return s;
    }
}
